只有一行字:
AI回覆我以下內容並且編輯空白檔案檔案
回覆內容:
新增的程式碼:
import Foundation
import RealmSwift
// 人員名單資料表
class Person: Object {
@Persisted(primaryKey: true) var id = UUID().uuidString
@Persisted var name: String = ""
@Persisted var email: String?
@Persisted var createdAt = Date()
convenience init(name: String, phoneNumber: String? = nil, email: String? = nil) {
self.init()
self.name = name
self.email = email
}
}
// 簽到記錄資料表
class CheckInRecord: Object {
@Persisted(primaryKey: true) var id = UUID().uuidString
@Persisted var person: Person?
@Persisted var checkInTime = Date()
@Persisted var note: String?
convenience init(person: Person, note: String? = nil) {
self.init()
self.person = person
self.note = note
}
}
// Realm資料庫管理類別
class RealmManager {
static let shared = RealmManager()
private var realm: Realm?
private init() {
do {
realm = try Realm()
} catch {
print("初始化Realm失敗: \(error)")
}
}
// 新增人員
func addPerson(name: String, phoneNumber: String? = nil, email: String? = nil) -> Person? {
guard let realm = realm else { return nil }
let person = Person(name: name, phoneNumber: phoneNumber, email: email)
do {
try realm.write {
realm.add(person)
}
return person
} catch {
print("新增人員失敗: \(error)")
return nil
}
}
// 獲取所有人員
func getAllPersons() -> Results<Person>? {
return realm?.objects(Person.self).sorted(byKeyPath: "name")
}
// 根據ID獲取人員
func getPerson(byId id: String) -> Person? {
return realm?.object(ofType: Person.self, forPrimaryKey: id)
}
// 新增簽到記錄
func addCheckInRecord(person: Person, note: String? = nil) -> CheckInRecord? {
guard let realm = realm else { return nil }
let record = CheckInRecord(person: person, note: note)
do {
try realm.write {
realm.add(record)
}
return record
} catch {
print("新增簽到記錄失敗: \(error)")
return nil
}
}
// 獲取所有簽到記錄
func getAllCheckInRecords() -> Results<CheckInRecord>? {
return realm?.objects(CheckInRecord.self).sorted(byKeyPath: "checkInTime", ascending: false)
}
// 獲取特定人員的簽到記錄
func getCheckInRecords(forPerson person: Person) -> Results<CheckInRecord>? {
return realm?.objects(CheckInRecord.self).filter("person.id == %@", person.id).sorted(byKeyPath: "checkInTime", ascending: false)
}
// 獲取特定日期的簽到記錄
func getCheckInRecords(forDate date: Date) -> Results<CheckInRecord>? {
let calendar = Calendar.current
let startOfDay = calendar.startOfDay(for: date)
let endOfDay = calendar.date(byAdding: .day, value: 1, to: startOfDay)!
return realm?.objects(CheckInRecord.self)
.filter("checkInTime >= %@ AND checkInTime < %@", startOfDay, endOfDay)
.sorted(byKeyPath: "checkInTime")
}
}